const fs = require('fs');
const path = require('path');

//  node 应用中 要么都用 callback 回调函数 形式 要么都转换成 promise 形式的

// fs.promise.readFile() // 新版本的 node 每个函数都提供了 promise 的形式

// const filename = path.resolve(__dirname, './myfiles/1.txt');
// fs.readFile(filename, "utf-8", (err, content) => {
//   console.log(content);
// });

// Sync函数是同步的，会导致JS运行阻塞，极其影响性能
// 通常，在程序启动时运行有限的次数即可
// 每个 api 都有对应的 async 形式
// 通常初始化的时候 有用

// const content = fs.readFileSync(filename, "utf-8");
// console.log(content);

// async function test() {
//   const content = await fs.promises.readFile(filename, 'utf-8');
//   console.log(content);
// }

// test();

// 第一个参数 文件路径 可以写相对路径 可以写绝对路径
// 相当路径 相当的不是模块的路径 而是当前命令行执行的路径
// 所以最后写 绝对路径

const filename1 = path.resolve(__dirname, './myfiles/1.txt');
const filename2 = path.resolve(__dirname, './myfiles/1.jpeg');
// 或者 __dirname + '/myfiles/1.txt'
// 第三个参数 是回调函数
// fs.readFile(filename1, 'utf-8', (err, content) => {
//   console.log(err, content, 'log'); // 拿到的时候内容
// });

// fs.readFile(
//   filename1,
//   {
//     encoding: 'utf-8', // 编码格式
//   },
//   (err, content) => {
//     console.log(err, content, 'log'); // 拿到的时候内容
//   }
// );

fs.readFile(filename1, (err, content) => {
  console.log(err, content, 'log'); // 拿到的时候 buffer 里面存的每个数据的字节
  console.log(err, content.toString('utf-8'), 'log');
  // 文件里面存的 不管是图片 视频 语音 度出来都是 数据对应的 字节 数字
  // 计算机只能存 二进制
});
